--
-- Author: shunguo.chen
-- Date: 2018-04-18 16:26:43
--
-- Guide 引导数据

local string_sub = string.sub

local fileName = string.getModeName(...)
local ClassRef = class(fileName)

function ClassRef:ctor(data)
	if data then
		self:init(data)
	end
end

-- 激活类型／参数
-- 1.接受某个任务：（1|任务id）
-- 2.达到指定等级：（2|等级）
-- 3.其他引导激活：（3|引导id）
-- 4.第一次开启某个界面：（4|界面id）

-- 触发类型／参数
-- 1.指示UI：1
-- 2.指示屏幕边缘：2|X轴偏移;Y轴偏移
-- 3.指示NPC：3|NPCid（显示在NPC头顶）

-- 关闭类型／参数
-- 1.点击指示范围(之后可能延迟一段时间结束)：（1|时间(毫秒)）
-- 2.自动消失：（2|时间(毫秒)）

-- data = conf
function ClassRef:init(data) 
	self._conf = data

	self.id = tonumber(data.ID)
	self.nextId = tonumber(data.nextId or 0)

	-- 属于的任务
	local belongTask = data.belongTask
	if belongTask then
		-- 有属于的任务，任务完成时引导完成，不需要存服务器
		self.belongTaskType = tonumber(string.sub(belongTask, 1, 1))
		self.belongTaskId = tonumber(string.sub(belongTask, 3))
	end

	-- 关闭类型／参数
	self.delay = tonumber(data.delay or 0) / 1000
	-- if self.delay == 0 then
	-- 	self.delay = 0.1
	-- end
	local close = data.close
	local tp = tonumber(string_sub(close, 1, 1))
	self.closeType = tp
	if #close > 3 then
		self.closeTime = tonumber(string_sub(close, 3)) / 1000
	end

	-- 触发类型／参数
	local trigger = data.trigger
	local tp = tonumber(string_sub(trigger, 1, 1))
	self.triggerType = tp
	if tp == 1 then
		-- 在isDesktop()时，参数有意义，表示主界面btn的funcId
		if #trigger >=3 then
			self.triggerFuncId = tonumber(string_sub(trigger, 3))
		end
	elseif tp == 2 then
		local posStr = string_sub(trigger, 3)
		local ary = table.tonumber(string.split(posStr, ";"))
		local x = ary[1] - display.ui_width / 2 + display.cx
		local y = ary[2] - display.ui_height / 2 + display.cy
		self.triggerPos = cc.p(x, y)

		-- 屏幕点触发，使用触发半径判定点击范围
		self.triggerRadius = 100
	elseif tp == 3 then
		self.triggerNpcId = tonumber(string_sub(trigger, 3))
	end
	self.modal = tonumber(data.modal or 0)
	self.scene = tonumber(data.scene)

	-- ui 参数
	self.effectZoom = tonumber(data.effectZoom or 10000) / 10000
	self.tipPos = tonumber(data.tipPos or 1)
	self.tipY = tonumber(data.tipY or 50)
	self.handZoom = tonumber(data.handZoom or 10000) / 10000
	self.handX = tonumber(data.handX or 0)
	self.handY = tonumber(data.handY or 0)

	-- print("effectZoom", self.effectZoom)
	-- print("tipPos", self.tipPos)
	-- print("tipY", self.tipY)
	-- print("handZoom", self.handZoom)
	-- print("handX", self.handX)
	-- print("handY", self.handY)
end

-- 设置激活数据，外面已经解析了，就直接传进来
function ClassRef:setActivateData(tp, val)
	self.activateType = tp
	self.activateValue = val
end

-- 触发场景是主界面(主界面，快捷装备，主界面右下角提示都算在主界面内部)
function ClassRef:isDesktopType()
	return self.scene == Constant.FUNC_TYPE_DESKTOP or
			self.scene == Constant.FUNC_TYPE_QUICK_USE or 
			self.scene == Constant.FUNC_TYPE_DESKTOP_TIP
end

-- 主界面场景
function ClassRef:isDesktop()
	return self.scene == Constant.FUNC_TYPE_DESKTOP
end

-- 触发场景是地图
function ClassRef:isMap()
	return self.scene == Constant.FUNC_TYPE_MAP
end

-- 属于支线任务
function ClassRef:isBelongSideTask()
	return self.belongTaskType == 5
end

-- 属于界面打开触发
function ClassRef:isBelongView()
	return self.activateType == 4
end

-- 支线任务和界面打开可以被取消
function ClassRef:isCanCancel()
	return self:isBelongView() or self:isBelongSideTask()
end

-- 关闭类型
function ClassRef:isTouchClose()
	return self.closeType == 1
end

-- 屏幕固定点触发
function ClassRef:isPointTrigger()
	return self.triggerType == 2
end

-- 是模态的引导
function ClassRef:isModal()
	return self.modal == 1
end

-- 是上方的tip
function ClassRef:isUpTip()
	return self.tipPos == 1
end

function ClassRef:isShowTip()
	return self._conf.bubbletip == "1"
end

function ClassRef:getDesc()
	return L(self._conf.desc)
end

return ClassRef